
; 1st person camera view in cars.
; I have not tested this code.

004F: create_thread CameraMod
004F: create_thread CameraModes

...

:CameraModes
0001: wait 250 ms 
00D6: if 0 
0256:   player $PLAYER_CHAR defined 
004D: jump_if_false CameraModes 
00D6: if 0 
00E0:   player $PLAYER_CHAR driving 
004D: jump_if_false CameraModes 
00D6: if 0 
00E1:   key_pressed 0 13 
004D: jump_if_false CameraModes 

:CameraModesLoop
0001: wait 0 ms 
00D6: if 0 
80E1:   NOT   key_pressed 0 13 
004D: jump_if_false CameraModesLoop 
0008: $CameraMode += 1  ;; integer values 
00D6: if 0 
0018:   $CameraMode > 4  ;; integer values 
004D: jump_if_false CameraModesLoopEnd 
0004: $CameraMode = 0  ;; integer values 

:CameraModesLoopEnd
0002: jump CameraModes 

:CameraMod
0001: wait 250 ms 
00D6: if 0 
0256:   player $PLAYER_CHAR defined 
004D: jump_if_false CameraMod 
00D6: if 0 
8118:   NOT   actor $PLAYER_ACTOR dead 
004D: jump_if_false CameraMod 
00D6: if 0 
0038:   $CameraMode == 3  ;; integer values 
004D: jump_if_false CameraMod4 
00D6: if 0 
00E0:   player $PLAYER_CHAR driving 
004D: jump_if_false CameraMod 
03C1: $CameraModCar = player $PLAYER_CHAR car 
0005: $CameraHeight = .75  ;; floating-point values 
0005: $CameraYOffset = -.55  ;; floating-point values 
0005: $CameraXOffset = 0.0  ;; floating-point values 
00D6: if 0 
00DE:   player $PLAYER_CHAR driving_vehicle_type #COACH 
004D: jump_if_false Label00AC39 
0005: $CameraHeight = 2.0  ;; floating-point values 
0005: $CameraYOffset = 2.0  ;; floating-point values 

:Label00AC39
00D6: if 21 
00DE:   player $PLAYER_CHAR driving_vehicle_type #SQUALO 
00DE:   player $PLAYER_CHAR driving_vehicle_type #TROPIC 
004D: jump_if_false Label00AC5E 
0005: $CameraHeight = .95  ;; floating-point values 

:Label00AC5E
00D6: if 0 
00DE:   player $PLAYER_CHAR driving_vehicle_type #JETMAX 
004D: jump_if_false Label00AC7B 
0005: $CameraHeight = 1.25  ;; floating-point values 

:Label00AC7B
00D6: if 0 
00DE:   player $PLAYER_CHAR driving_vehicle_type #FAGGIO 
004D: jump_if_false Label00AC98 
0005: $CameraYOffset = -.45  ;; floating-point values 

:Label00AC98
0001: wait 0 ms 
00D6: if 0 
0256:   player $PLAYER_CHAR defined 
004D: jump_if_false CameraModCleanup 
00D6: if 0 
00DC:   player $PLAYER_CHAR driving $CameraModCar 
004D: jump_if_false CameraModCleanup 
00D6: if 0 
0038:   $CameraMode == 3  ;; integer values 
004D: jump_if_false CameraModCleanup 
02E3: $TCCYfix = car $CameraModCar speed 
0005: $CameraXOffset = 0.0  ;; floating-point values 
0005: $CMYOffset2 = 6.0  ;; floating-point values 
00D6: if 0 
00E1:   key_pressed 0 5 
004D: jump_if_false Label00AD12 
0005: $CameraXOffset = -6.0  ;; floating-point values 
0005: $CMYOffset2 = 0.0  ;; floating-point values 

:Label00AD12
00D6: if 0 
00E1:   key_pressed 0 7 
004D: jump_if_false Label00AD52 
0005: $CameraXOffset = 6.0  ;; floating-point values 
0005: $CMYOffset2 = 0.0  ;; floating-point values 
00D6: if 0 
00E1:   key_pressed 0 16 
004D: jump_if_false Label00AD52 
0005: $CMYOffset2 = 6.0  ;; floating-point values 

:Label00AD52
00D6: if 1 
00E1:   key_pressed 0 5 
00E1:   key_pressed 0 7 
004D: jump_if_false Label00AD7D 
0005: $CameraXOffset = 0.0  ;; floating-point values 
0005: $CMYOffset2 = -6.0  ;; floating-point values 

:Label00AD7D
0015: $TCCYfix /= 30.0  ;; floating-point values 
0059: $TCCYfix += $CameraYOffset  ;; floating-point values 
04C4: create_coordinate $CameraXPos $CameraYPos $CameraZPos from_actor $PLAYER_ACTOR offset 0.0 $TCCYfix $CameraHeight 
04C4: create_coordinate $CameraPXPos $CameraPYPos $CameraPZPos from_actor $PLAYER_ACTOR offset $CameraXOffset $CMYOffset2 $CameraHeight 
015F: set_camera_position $CameraXPos $CameraYPos $CameraZPos 0.0 0.0 0.0 
0160: point_camera $CameraPXPos $CameraPYPos $CameraPZPos 2 
0002: jump Label00AC98 

:CameraModCleanup
01C3: remove_references_to_car $CameraModCar  ;; Like turning a car into any random car 
02EB: restore_camera_with_jumpcut 
0002: jump CameraMod 

:CameraMod4
00D6: if 0 
0038:   $CameraMode == 4  ;; integer values 
004D: jump_if_false CameraMod 
00D6: if 0 
00E0:   player $PLAYER_CHAR driving 
004D: jump_if_false CameraMod 
03C1: $CameraModCar = player $PLAYER_CHAR car 

:CameraMod4loop
0001: wait 0 ms 
00D6: if 0 
0256:   player $PLAYER_CHAR defined 
004D: jump_if_false CameraModCleanup 
00D6: if 0 
00DC:   player $PLAYER_CHAR driving $CameraModCar 
004D: jump_if_false CameraModCleanup 
00D6: if 0 
0038:   $CameraMode == 4  ;; integer values 
004D: jump_if_false CameraModCleanup 
; 04C4: create_coordinate $CameraXPos $CameraYPos $CameraZPos from_actor $PLAYER_ACTOR offset 0! -15! 5!
0407: create_coordinate $CameraXPos $CameraYPos $CameraZPos from_car $CameraModCar offset 0.0 -15.0 5.0 
015F: set_camera_position $CameraXPos $CameraYPos $CameraZPos 0.0 0.0 0.0 
0158: camera_on_vehicle $CameraModCar 15 2 
0002: jump CameraMod4loop 
